package com.test.util;

import javax.servlet.http.HttpServletRequest;

/**
 * @author 徒有琴
 */
public class ParameterUtil {
    /**
     * 从请求中获取参数，并转化成指定的类型
     *
     * @param request
     * @param name
     * @return
     */
    public static Integer getInteger(HttpServletRequest request, String name) {
        String param = request.getParameter(name);//servlet中，request请求中所有的参数默认都是字符串
        //index.jsp   没有参数
        //index.jsp?name=   参数值是空字符串
        if (param == null || param.trim().length() == 0) {//没有传递参数或者参数是空字符串
            return null;
        }
        try {
            return Integer.parseInt(param);//转化成整数
        } catch (NumberFormatException e) {//如果用户输入的字符串不是数字，比如abcd
            e.printStackTrace();
        }
        return null;
    }

    public static Float getFloat(HttpServletRequest request, String name) {
        String param = request.getParameter(name);//servlet中，request请求中所有的参数默认都是字符串
        //index.jsp   没有参数
        //index.jsp?name=   参数值是空字符串
        if (param == null || param.trim().length() == 0) {//没有传递参数或者参数是空字符串
            return null;
        }
        try {
            return Float.parseFloat(param);//转化成浮点数
        } catch (NumberFormatException e) {//如果用户输入的字符串不是数字，比如abcd
            e.printStackTrace();
        }
        return null;
    }


    public static String getString(HttpServletRequest request, String name) {
        String param = request.getParameter(name);
        if (param == null || param.trim().length() == 0) {
            return null;
        }
        return param.trim();
    }

    public static boolean checkParam(Object param, HttpServletRequest request, String message) {
        if (param == null) {
            request.setAttribute("message", message);
            return false;
        }
        return true;
    }

    //192.168.1.1   4段，每一段都是0~255之间的数字
    public static boolean checkIP(String ip) {
        String[] nums = ip.split("\\.");
        if (nums.length != 4) {//不是4段
            return false;
        }
        for (String num : nums) {
            try {
                Integer n = Integer.parseInt(num);
                if (n < 0 || n > 255) {//123.a.0.0
                    return false;//当遇见第一段不匹配的时候，直接返回false
                }
            } catch (NumberFormatException e) {//a.b.c.d
                e.printStackTrace();
                return false;
            }
        }
        return true;
    }
}
